/* 获取全局变量 */
var app = getApp();

Page({
  data: {
    /* 轮盘当前位置 */
    iCurrentPos: 0,
    /* 轮盘上次位置 */
    iLastPos: 0,
    /* 当前已跑步数 */
    iCurrentRun: 0,
    /* 轮盘使能 */
    bRollEn: true,
    /* 定时器 */
    oTimer: "",
    /* 轮盘最大数量 */
    iMaxNum: 8,
    /* 最小圈数 */
    iMinTurns: 5,
    /* 当次选择花色 */
    iRollSuit: 0,
    /* 当次前进步数 */
    iRollNum: 0,
    /* 轮盘初始速度 */
    iMoveSpd: 300,
    /* 轮盘最大速度 */
    iMaxSpd: 40,
    /* 是否已启动游戏 */
    bGameStart: false,
    /* 摇一次号 */
    bDoOne: false,
    iPickRound: app.globalData.iPickRound,
    /* 游戏结果 */
    aBoxContent: [
      [ 
        '黑桃A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '黑桃2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '黑桃3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '黑桃4：幸运牌\r\n过，将手机交下一名玩家',
        '黑桃5：幸运牌\r\n过，将手机交下一名玩家',
        '黑桃6：幸运牌\r\n过，将手机交下一名玩家',
        '黑桃7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '黑桃8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '黑桃9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '黑桃10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '黑桃J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '黑桃Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '黑桃K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
      [
        '红桃A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '红桃2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '红桃3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '红桃4：幸运牌\r\n过，将手机交下一名玩家',
        '红桃5：幸运牌\r\n过，将手机交下一名玩家',
        '红桃6：幸运牌\r\n过，将手机交下一名玩家',
        '红桃7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '红桃8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '红桃9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '红桃10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '红桃J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '红桃Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '红桃K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
      [
        '梅花A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '梅花2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '梅花3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '梅花4：幸运牌\r\n过，将手机交下一名玩家',
        '梅花5：幸运牌\r\n过，将手机交下一名玩家',
        '梅花6：幸运牌\r\n过，将手机交下一名玩家',
        '梅花7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '梅花8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '梅花9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '梅花10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '梅花J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '梅花Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '梅花K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
      [
        '方块A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '方块2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '方块3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '方块4：幸运牌\r\n过，将手机交下一名玩家',
        '方块5：幸运牌\r\n过，将手机交下一名玩家',
        '方块6：幸运牌\r\n过，将手机交下一名玩家',
        '方块7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '方块8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '方块9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '方块10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '方块J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '方块Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '方块K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
    ],
    /* 备份 */
    aBoxContentBak: [
      [
        '黑桃A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '黑桃2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '黑桃3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '黑桃4：幸运牌\r\n过，将手机交下一名玩家',
        '黑桃5：幸运牌\r\n过，将手机交下一名玩家',
        '黑桃6：幸运牌\r\n过，将手机交下一名玩家',
        '黑桃7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '黑桃8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '黑桃9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '黑桃10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '黑桃J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '黑桃Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '黑桃K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
      [
        '红桃A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '红桃2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '红桃3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '红桃4：幸运牌\r\n过，将手机交下一名玩家',
        '红桃5：幸运牌\r\n过，将手机交下一名玩家',
        '红桃6：幸运牌\r\n过，将手机交下一名玩家',
        '红桃7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '红桃8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '红桃9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '红桃10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '红桃J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '红桃Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '红桃K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
      [
        '梅花A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '梅花2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '梅花3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '梅花4：幸运牌\r\n过，将手机交下一名玩家',
        '梅花5：幸运牌\r\n过，将手机交下一名玩家',
        '梅花6：幸运牌\r\n过，将手机交下一名玩家',
        '梅花7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '梅花8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '梅花9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '梅花10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '梅花J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '梅花Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '梅花K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
      [
        '方块A：命令牌\r\n指定一位玩家喝1杯，再按一次',
        '方块2：小姐牌\r\n在接下来游戏中陪酒3次，再按一次',
        '方块3：游戏牌\r\n所有玩家玩逛三园，结束后再按一次',
        '方块4：幸运牌\r\n过，将手机交下一名玩家',
        '方块5：幸运牌\r\n过，将手机交下一名玩家',
        '方块6：幸运牌\r\n过，将手机交下一名玩家',
        '方块7：游戏牌\r\n所有玩家玩‘数七’，结束后再按一次',
        '方块8：厕所牌\r\n随时可选择去厕所一次，将手机交下一名玩家',
        '方块9：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '方块10：游戏牌\r\n与指定玩家游戏，结束后再按一次',
        '方块J：罚酒牌\r\n左侧玩家喝1杯，再按一次',
        '方块Q：罚酒牌\r\n右侧玩家喝1杯，再按一次',
        '方块K：罚酒牌\r\n自己喝1杯，再按一次',
      ],
    ],
  },
  /* 开始滚动 */
  fnStartRolling: function () {
    let that = this;
    /* 初始化步数 */
    that.data.iCurrentRun = 0;

    if (that.data.bRollEn) {
      that.setData({
        bRollEn: false,
      })
      that._fnStartRolling();
    }
  },
  onShow: function () {
    this.data.min_height = getApp().globalData.windowHeight;
    this.setData(this.data);
    if (app.globalData.iPickRound != this.data.iPickRound) {
      this.setData({
        iPickRound: app.globalData.iPickRound,
        bGameStart: false,
        aBoxContent: this.data.aBoxContentBak,
      })
    }
  },
  onUnload: function () {
    this.setData({
      bGameStart: false,
      iCurrentPos: 0,
      iCurrentRun: 0,
    })
  },
  fnStart: function () {
    this.setData({
      bGameStart: true,
    })
  },
  /* 滚动轮盘的动画效果 */
  _fnStartRolling: function () {
    var that = this;
    this.data.oTimer = setTimeout(function () { that._fnStartRolling(); }, this.data.iMoveSpd);
    /* 已经跑步数加一 */
    this.data.iCurrentRun++;
    /* 当前的加一 */
    this.data.iCurrentPos++;
    if (!this.data.bDoOne) {
      /* 随机获得当次前进步数 */
      do {
        this.data.iRollNum = Math.round(Math.random() * 12);
        this.data.iRollSuit = Math.round(Math.random() * 3);
        var condition = app.fnIsEmpty(this.data.aBoxContent[this.data.iRollSuit][this.data.iRollNum])
      } while (condition);
      this.setData({
        bDoOne: true,
      })
    }
    
    
    /* 获取总步数，接口延迟问题，所以最后还是设置成1s以上 */
    var count_num = this.data.iMinTurns * this.data.iMaxNum + this.data.iRollNum - this.data.iLastPos;
    /* 上升期间 */
    if (this.data.iCurrentRun <= (count_num / 3) * 2) {
      /* 加速 */
      this.data.iMoveSpd -= 30;
      if (this.data.iMoveSpd <= this.data.iMaxSpd) {
        this.data.iMoveSpd = this.data.iMaxSpd;
      }
    }
    /* 抽奖结束 */
    else if (this.data.iCurrentRun >= count_num) {
      clearInterval(this.data.oTimer);
      this.setData({
        bRollEn: true,
        bDoOne: false,
      })
      if (this.data.iCurrentPos > this.data.iMaxNum) {
        this.data.iCurrentPos = 1;
      }
      /* 抽到K */
      if (this.data.iRollNum == 12) {
        this.data.iPickRound --;
      }
      if (this.data.iPickRound == 0) {
        wx.showModal({
          content: "游戏结束\r\n所有玩家共饮" + app.globalData.iPickRound + "杯\r\n祝大家玩得开心！",
          showCancel: false,
          success: function (res) { 
            that.setData({
              bGameStart: false,
            })
          }
        });
      } else {
        wx.showModal({
          content: this.data.aBoxContent[this.data.iRollSuit][this.data.iRollNum],
          showCancel: false,
          success: function (res) { }
        });
        count_num = 0;
        this.data.aBoxContent[this.data.iRollSuit][this.data.iRollNum] = "";
      }
    }
    /* 下降期间 */
    else if (count_num - this.data.iCurrentRun <= 10) {
      this.data.iMoveSpd += 20;
    }

    /* 缓冲区间 */
    else {
      this.data.iMoveSpd += 10;
      if (this.data.iMoveSpd >= 100) {
        this.data.iMoveSpd = 100;
      }
    }
    if (this.data.iCurrentPos > this.data.iMaxNum) {
      this.data.iCurrentPos = 1;
    }
    this.setData(this.data);
  }
})
